# 系统内置模块：序列化-pickle

import pickle

"""
pickle模块将数据序列化为二进制，提供两个函数：
dumps() 序列化
loads() 反序列化
"""
vars = 'so much money'
# b'\x80\x04\x95\x11\x00\x00\x00\x00\x00\x00\x00\x8c\rso much money\x94.' <class 'bytes'>
vart = [1, '3']
# b'\x80\x04\x95\x0b\x00\x00\x00\x00\x00\x00\x00]\x94(K\x01\x8c\x013\x94e.' <class 'bytes'>
vard = {'name': '张三'}
# b'\x80\x04\x95\x14\x00\x00\x00\x00\x00\x00\x00}\x94\x8c\x04name\x94\x8c\x06\xe5\xbc\xa0\xe4\xb8\x89\x94s.' <class 'bytes'>
res = pickle.dumps(vard)

res = pickle.loads(res)
# {'name': '张三'} <class 'dict'>

# print(res, type(res))

# 将一个数据存入到一个文件中
# 使用dumps() loads()
# vard = {'name': '张三', 'age': 18, 'hobble': 'sleep'}
# 写入
# res = pickle.dumps(vard)
# with open('./data.txt', 'wb') as fp:
#     fp.write(res)

# 读取
# with open('./data.txt', 'rb') as fp:
#     res = fp.read()
# # 反序列化
# res = pickle.loads(res)
# print(res)


# 使用dump() load()
# dump(data, fp) 参数1：需要存入文件的数据；参数2：文件对象
# load(fp) 参数：文件对象

# vard = {'name': '张三', 'age': 18, 'hobble': 'sleep'}
# with open('./data.txt', 'wb') as fp:
#     pickle.dump(vard, fp)

with open('./data.txt', 'rb') as fp:
    res = pickle.load(fp)
print(res)